hi!今天要介紹mapping!其實mapping很像一個hash table,有很多時候都會有一個名字對應一個數值的狀況,好比在銀行時,一個用戶名會對應一個銀行戶頭金額、在學校時,一個學生名會對應一個成績...等,像這種狀況,就會需要一個地方去整理這些數值,並且讓這些值是可以用名稱去找到的。
在這樣的狀況下,我們會說用戶名叫做key、戶頭金額是value,學生名是key、成績是value。
要注意的是mapping並不是拿來存key或value資訊的地方
,而且也沒有任何長度(length)資訊!就像我們一開始說的,它像hash table,所以會把keccak(key)的hash拿來對應value。
所以沒有真的使用key,而是用key的hash。這樣就會有一個限制,就是當你今天key沒有東西的時候,就完全無法對應value!那在還沒有填東西進去之前,乙太鏈都會直接定義是0,同樣的mapping還沒使用到的地方也會被初始化為0。
所以我們要來宣告看看mapping!
mapping(key型別=> Value型別)名稱
mapping(String =>uint) number(學生名 對應 成績並且命名為number)
mapping
雖然一般我們如果宣告一個變數uint x=2; delete x;x=0
但今天如果我們使用mapping(Zona=>100),delete Zona是無法刪除東西的!
要切記key一定要跟mapping一起使用,不然什麼都不是!
正確應該是
delete map[Zona];
message其實是由兩種格式來組成,
Sender: 傳送的來源位置 (msg.sender)
Value: 傳送者送過來的 Wei (msg.value)